﻿using UnityEngine;
using System.Collections;
using UnityEngine.UI;
/// <summary>
/// 把下面代码挂在游戏中的任意GameObject上，原理其实很简单就是绘制辅助线，当UI中RaycastTarget发生变化，SceneView中的蓝色辅助线也会刷新，还是挺方便的。在SceneView视图中，我并不知道那些勾选了RaycastTarget，加上上面的脚本后，可以在scene试图中直接看到，蓝色框表示的就是勾选过RaycastTarget的UI。
/// </summary>
public class DebugUIHasRaycastLine : MonoBehaviour
{

    static Vector3[] fourCorners = new Vector3[4];
    void OnDrawGizmos()
    {
        foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
        {
            if (g.raycastTarget)
            {
                RectTransform rectTransform = g.transform as RectTransform;
                rectTransform.GetWorldCorners(fourCorners);
                Gizmos.color = Color.blue;
                for (int i = 0; i < 4; i++)
                    Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]);

            }
        }
    }
}
